#!/usr/bin/env bun

/**
 * 简单的Mermaid错误处理验证
 * 这个脚本生成包含不同Mermaid错误的PDF样本，用于手动验证
 */

import { quickToPdf } from '../../../../src/tools/convert/index.js';
import { promises as fs } from 'fs';
import path from 'path';

// 测试用例
const testCases = [
  {
    name: '正确语法',
    content: `# 正确的Mermaid语法

\`\`\`mermaid
graph TD
    A[开始] --> B[处理]
    B --> C[结束]
\`\`\`

这个图表应该正确显示。`
  },
  {
    name: '语法错误',
    content: `# 错误的Mermaid语法

\`\`\`mermaid
graph TD
    A[开始] B[处理]
    B --> C[结束]
\`\`\`

这个图表有语法错误（缺少箭头），应该显示错误提示。`
  },
  {
    name: '无效图表类型',
    content: `# 无效的图表类型

\`\`\`mermaid
invalidchart
    A --> B
\`\`\`

这是无效的图表类型，应该显示错误信息。`
  },
  {
    name: '空白图表',
    content: `# 空白Mermaid图表

\`\`\`mermaid

\`\`\`

这是空的Mermaid块，应该显示"空的图表定义"。`
  },
  {
    name: '混合正确和错误',
    content: `# 混合测试

## 正确的图表
\`\`\`mermaid
graph LR
    A[输入] --> B[处理]
    B --> C[输出]
\`\`\`

## 错误的图表
\`\`\`mermaid
graph TD
    A[错误 --> B[语法]
\`\`\`

## 另一个正确的图表
\`\`\`mermaid
sequenceDiagram
    participant 用户
    participant 系统
    用户->>系统: 请求
    系统-->>用户: 响应
\`\`\`

这个文档包含正确和错误的Mermaid图表。`
  }
];

async function generateTestPdfs() {
  console.log('🧪 开始生成Mermaid错误处理测试样本');
  
  try {
    // 创建输出目录
    const outputDir = './output/mermaid-error-samples';
    await fs.mkdir(outputDir, { recursive: true });
    
    let successCount = 0;
    let totalCount = testCases.length;
    
    for (let i = 0; i < testCases.length; i++) {
      const testCase = testCases[i];
      if (!testCase) {
        console.log(`❌ 测试用例 ${i + 1} 不存在`);
        continue;
      }
      
      const outputPath = path.join(outputDir, `${i + 1}-${testCase.name}.pdf`);
      
      console.log(`📄 生成 ${i + 1}/${totalCount}: ${testCase.name}`);
      
      try {
        const result = await quickToPdf(testCase.content, outputPath, {
          title: `Mermaid测试 - ${testCase.name}`
        });
        
        if (result.success) {
          console.log(`✅ 成功生成: ${(result.size / 1024).toFixed(2)}KB`);
          successCount++;
        } else {
          console.log(`❌ 生成失败: ${testCase.name}`);
        }
        
      } catch (error) {
        const errorMessage = error instanceof Error ? error.message : String(error);
        console.log(`❌ 生成异常: ${testCase.name} - ${errorMessage}`);
      }
    }
    
    console.log(`\n📊 生成完成: ${successCount}/${totalCount} 成功`);
    console.log(`📁 文件位置: ${outputDir}`);
    
    console.log('\n🔍 预期结果:');
    console.log('1. 正确语法 - 应该显示完整的流程图');
    console.log('2. 语法错误 - 应该显示黄色警告框，包含错误信息');
    console.log('3. 无效图表类型 - 应该显示错误提示');
    console.log('4. 空白图表 - 应该显示"空的图表定义"提示');
    console.log('5. 混合正确和错误 - 正确的显示图表，错误的显示警告');
    
  } catch (error) {
    console.error('❌ 测试失败:', error);
  }
}

// 如果直接运行
if (import.meta.main) {
  generateTestPdfs().catch(console.error);
}

export { generateTestPdfs };
